// 知识点1：set的定义与使用，与map值差一个值而已，它只有关键字

// 知识点2：set对find()的使用，返回一个迭代器，如果给定的关键词在set中，迭代器指向该关键词，如不在，则返回尾后迭代器
#include <fstream>
#include <iostream>
#include <map>
#include <string>
#include <vector>

using namespace std;

int main(int argc, char **argv) {
  // map的定义
  map<string, size_t> word_count;
  fstream in("chapter11/1.txt"); //定义一个输入流
  string word;

  while (in >> word) {
    ++word_count[word];
  }

  // map同样支持迭代器操作
  map<string, size_t>::iterator mapi;
  for (mapi = word_count.begin(); mapi != word_count.end();
       ++mapi) // C++ 11支持:const auto &s : word_count
  {
    //两个成员分别代表关键字和对应值
    cout << mapi->first << " ";
    cout << mapi->second << " " << endl;
  }

  return 0;
}